The field of software security has become increasingly important in today's society. Computer systems have become intertwined in everyday life, while malicious software (‘malware’) that can disrupt and even prevent the use of computer systems has become increasingly more sophisticated. Various techniques for exploiting vulnerable bytes in software programs have been developed in order to cause the execution of unintentional and/or malicious operations. For example, return oriented programming (ROP) is a mainstream technique that malicious operators use to access existing code in a software program and execute the accessed code in an unintended and potentially malicious manner. To harden software and make it more reliable, certain hardware capabilities have been developed to enforce correct execution flow. For example, shadow stack and Control-Flow Enforcement Technology (CET) instructions can be used to harden new software programs to help reduce the vulnerability of certain code in the programs. Nevertheless, some vulnerabilities may escape detection and mitigation. Consequently, software developers face significant challenges in hardening software programs as malicious users continue to develop new techniques to exploit vulnerable bytes.